#pragma once

#include <glad/glad.h>
#include "windowing/window/window.h"
#include "core/ECS/Registry.h"

namespace SCION_EDITOR
{
  class Application
  {
  private:
    std::unique_ptr<SCION_WINDOWING::Window> m_pWindow;
    std::unique_ptr<SCION_CORE::ECS::Registry> m_pRegistry;

    SDL_Event m_Event;
    bool m_bIsRunning;

  private:
    bool Initialize();
    bool LoadShader();

    void ProcessEvent();
    void Update();
    void Render();

    void Clear();
    Application();

  public:
    static Application &GetInstance();
    ~Application();

    void Run();
  };
}